#!/usr/bin/env python
# _*_coding:utf-8 _*_
# @Time    :2020/4/2 19:36
# @Author  :Abner Wong
# @Software: PyCharm

from app.libs.TextRank.textPro import Text
from app.libs.TextRank import utils

from collections import Counter


class TextRank(Text):

    def __init__(self,
                 text=None, windows=2,
                 use_property=True, no_stopwords=True,
                 pr_config={'alpha': 0.85, 'max_iter': 100}):
        super(TextRank, self).__init__(text, use_property, no_stopwords)

        self.pr_config = pr_config
        self.windows = windows
        self.word_index, self.index_word, self.word_num = utils.words_info(self.words_pro)
        self.sorted_words = self._score_items(is_word=True)
        self.sorted_sents = self._score_items(is_word=False)

    def _build_adjacency_matrix(self, is_word=True):

        if is_word:
            adj_matrix = utils.word_adj_matrix(self.words_pro,
                                               self.windows,
                                               self.word_num,
                                               self.word_index)
        else:
            adj_matrix = utils.sent_adj_matrix(self.words_pro)

        return adj_matrix

    def _score_items(self, is_word=True):
        if is_word:
            adj_matrix = self._build_adjacency_matrix(is_word=is_word)
            scores = utils.cal_score(adj_matrix, **self.pr_config)
            sorted_items = utils.get_sorted_items(scores, self.index_word)
        else:
            adj_matrix = self._build_adjacency_matrix(is_word=is_word)
            scores = utils.cal_score(adj_matrix, **self.pr_config)
            index_sent = dict(zip(range(len(self.sents)), self.sents))
            sorted_items = utils.get_sorted_items(scores, index_sent)

        return sorted_items

    def get_n_keywords(self, N):
        return self.sorted_words[:N]

    def get_n_sentences(self, N):
        return self.sorted_sents[:N]


if __name__ == '__main__':
    content = '''
    行如星辰，大爱无悔
看着嫩芽初露的春，迎着绿树成荫的夏，踏着五彩缤纷的秋，走过银装素裹的冬，在四季的轮回中，奉献之果深耕心底，心如磐石，坚不可催，网格们如诗人一般吟诵，定要成为便民服务官，创建文明社区。
“不要人夸好颜色，只留清气满乾坤”，袁隆平，“杂交水稻之父”，长年累月，深扎在田间地头，不辞辛苦，夜以继日劳作，最终解决了亿万人的粮食问题，让人深受鼓舞。
自身的工作或许平凡，但网格员们却愿意像袁隆平一样，扬起生命之帆，不忘初心，砥砺前行，用微光诠释生命的意义，网格员们愿意一份微薄之力，让平凡的生活闪耀出奉献的光。
为居民安装楼道灯，点亮居民回家路
2022年4月11日下午，居民张嬢嬢到社区反映问题，金井湾社区网格员在与其谈话后了解到，张嬢嬢现居住的楼栋楼道灯年久未修，给生活造成了诸多不便，曾多次向物业反映，却未曾有人来管理。再三思量下，社区联系了物业公司的负责人来到现场协商，因双方情绪激动，各执一词，最后物业公司负责人拂袖而去，此事还是不了了之。
网格员考虑到楼栋内老年人的出行方便，随及与张嬢嬢去现场查看情况，并利用自己所长，帮助张嬢嬢解决了忧心已久的楼道灯不亮的问题，现场居民们纷纷表示谢意，感谢社区帮他们解决了楼道灯不亮的问题，看到居民们脸上露出了久违的笑容，网格员的内心充满了甜蜜；社区将继续把居民身边的小事办实办好，进一步提升群众满意度，将暖心实事工程真正办成居民心坎里的“民心”工程。
“采得百花成蜜后，为谁辛苦为谁甜”，张桂梅，创办了一所免费女子学校，使无数贫苦家庭中的女孩能够上得起学，她的事迹广为流传，她用爱、用心、用责任为无数女孩筑起了一道道坚实的城墙，她的一生注定不平凡，难怪人们会纷纷为他们竖起大拇指，网格员们更是愿意积极学习，把这种精神贯彻到自身的工作当中来。
做实事暖民心，思民生解民忧
“太感谢你们了，不然我都不知道这件事要僵持多久”这是居民吴天乐走进社区大厅说的第一句话。11月17日一大早，社区就收到了有限公司送来“做实事暖民心，思民生解民忧”的锦旗，感谢社区人民调解委员会为他们调解了与喻某某的经济纠纷。
2021年11月8日有限公司负责人吴某某向社区反映情况，其公司与喻某某在装修时因为款项问题产生了矛盾，在几次工作对接中此事一直僵持着，装修工程也暂停了，希望社区能出面从中协调；接到情况后，社区人民调解委员会经多方了解，在知晓其中缘由后，动之以理，晓之以情，与双方多次耐心的沟通、调解，最终双方达成一致，原先剑拔弩张的氛围终于缓和了下来，双方脸上都露出了满意的笑容，事情得到圆满解决。
锦旗是居民对社区工作最好的肯定与赞许，社区将以此为契机，在今后工作中将再接再厉，继续为居民办好事、办实事，做居民的贴心人。
“遮戟沉沙铁未销，自将磨洗认前朝”，钟南山，一场疫情使人们原本幸福平静的生活突然笼罩上了一层阴霾，面对未知的迷茫和挑战，全国各地积极闻风而动，积极响应国家号召，体现出了“一方有难，八方支援”的良好精神面貌，在此种紧迫的情况下，网格员们积极做好疫情防控阻击战，及时佩戴好口罩，不到人群密集的地方聚集，会及时开窗透风，保持室内空气的清新，不给病毒可趁之机，做好核酸检测工作，发现疫情会及时报告给相关负责人员，切实把疫情的苗头扼杀在摇篮里，用自身的力量守护祖国的静好岁月，如微光一般的人们，都在用自己的行动诠释着奉献者的风采。
“沉舟侧畔千帆过，病树前头万木春”的豁达，衬托出了无私奉献的伟大，在充满荆棘的道路上，网格员们仍然愿意沉淀信仰之石，直到看见黎明的曙光，不经风雨，怎见彩虹，不做出努力和奋斗，怎能知道人生的意义，会因为奉献而绚丽多姿。
“长风破浪会有时，只挂云帆济沧海”，面对对未知的迷茫和挑战，网格员们已经做好乘风破浪、砥砺前行服务居民的准备。
'''
    bot = TextRank(content)
    print(bot.get_n_keywords(20))
